package com.itheima.a01mystream;

import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Predicate;
import java.util.stream.Stream;

public class StreamDemo6 {
    public static void main(String[] args) {
        /**
         * Stream流的中间方法
         * filter, skip, limit
         *
         * 注意：1.中间方法，返回新的Stream流，原来的Stream流只能用一次，建议使用链式编程
         *      2.修改Stream流中的数据，不会影响原来集合或者数组中的数据
         */

        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list, "张无忌", "周芷若", "赵敏", "张强", "张三丰");

        // list.stream().filter(new Predicate<String>() {
        //     @Override
        //     public boolean test(String s) {
        //         return s.startsWith("张");
        //     }
        // }).forEach(s -> System.out.println(s));

        // filter 过滤
        System.out.println("filter");
        list.stream().filter(s -> s.startsWith("张")).forEach(s -> System.out.println(s));

        // limit 获取前几个元素
        System.out.println("limit");
        list.stream().limit(3).forEach(str -> System.out.println(str));

        // skip 跳过前几个元素
        System.out.println("skip");
        list.stream().skip(3).forEach(str -> System.out.println(str));

        // 练习：获取[2, 3]
        System.out.println("[2, 3]的元素为");
        list.stream().skip(2).limit(2).forEach(s -> System.out.println(s));
    }
}
